#ifndef LOCATION_SERVICE_H
#define LOCATION_SERVICE_H

#include <IPAddress.h>

#include "webapi_amap_base.h"

namespace webapi {

struct AmapLocation : AmapResponseBase {
  String province;
  String city;
  int adcode{0};
  GeoRectangle rectangle;
};

class AmapLocationService : public AmapWebServiceBase {
 public:
  /// @brief 查询公网IP， 使用ipify.org的WebAPI
  /// @param ip IP地址字符串缓冲区
  /// @return true 查询成功
  bool QueryPublicIpAddress(IPAddress& ip);

  /// @brief 查询地理位置， 使用高德的WebAPI
  /// @param geo_loc 地理位置
  /// @param ip IP地址
  /// @return true 查询成功
  bool QueryGeoLocation(AmapLocation& loc, const IPAddress& ip);

  /// @brief 直接查询地理位置， 使用ipify.org和高德的WebAPI
  /// @param geo_loc 地理位置
  /// @return true 查询成功
  bool QueryGeoLocation(AmapLocation& loc);
};

}  // namespace webapi

#endif  // LOCATION_SERVICE_H